package com.infore.siteManagement.util;
/**
* @ClassName: PageUtil 
* @Description: 分页工具类
* @author Cold
* @date 2018年7月17日 下午3:57:47
 */

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.infore.siteManagement.select.util.PageObject;
import com.infore.siteManagement.util.Page;

public class PageUtil {
	
	public static <T> Page<T> pageConvert(Page<T> page, org.springframework.data.domain.Page<T> dataPage) {
		page.setPageNo(dataPage.getNumber() + 1);
		page.setPageSize(dataPage.getSize());
		page.setTotalRecords((int)dataPage.getTotalElements());
		page.setList(dataPage.getContent());
		return page;
	}
	
	public static <T> Page<T> pageConvert(org.springframework.data.domain.Page<T> dataPage) {
		Page<T> page = new Page<T>();
		page.setPageNo(dataPage.getNumber() + 1);
		page.setPageSize(dataPage.getSize());
		page.setTotalRecords((int)dataPage.getTotalElements());
		page.setList(dataPage.getContent());
		return page;
	}
	
	public static Page<Map<String, Object>> inventedPage(List<Map<String, Object>> list, PageObject pageObject) {
		Page<Map<String, Object>> page = new Page<>();
		List<Map<String, Object>> listRows = new ArrayList<Map<String, Object>>();
		int pageNumber = pageObject.getPageNumber();
		int pageSize = pageObject.getPageSize();
		int totalRecords = list.size();
		page.setPageNo(pageNumber);
		page.setPageSize(pageSize);
		int start = (int) ((pageNumber - 1) * pageSize);
		int end = (int) (pageNumber * pageSize);
		// 虚拟分页
		for (int i = start; i < end; i++) {
			// 如果i大于listALL的长度，则跳出循环
			if (i > (totalRecords - 1)) {
				break;
			}
			listRows.add(list.get(i));
		}

		// 计算总页数
		int pageCount = (totalRecords / pageSize) + 1;
		if (totalRecords % pageObject.getPageSize() != 0) {
			pageCount++;
		}
		page.setTotalRecords(totalRecords);
		page.setTotalPages(pageCount);
		page.setList(listRows);
		return page;
	}
	
	public static <T> Page<T> inventedObjectPage(List<T> list, PageObject pageObject) {
		Page<T> page = new Page<>();
		List<T> listRows = new ArrayList<T>();
		int pageNumber = pageObject.getPageNumber();
		int pageSize = pageObject.getPageSize();
		int totalRecords = list.size();
		page.setPageNo(pageNumber);
		page.setPageSize(pageSize);
		int start = (int) ((pageNumber - 1) * pageSize);
		int end = (int) (pageNumber * pageSize);
		// 虚拟分页
		for (int i = start; i < end; i++) {
			// 如果i大于listALL的长度，则跳出循环
			if (i > (totalRecords - 1)) {
				break;
			}
			listRows.add(list.get(i));
		}

		// 计算总页数
		int pageCount = (totalRecords / pageSize) + 1;
		if (totalRecords % pageObject.getPageSize() != 0) {
			pageCount++;
		}
		page.setTotalRecords(totalRecords);
		page.setTotalPages(pageCount);
		page.setList(listRows);
		return page;
	}
}
